<?php

// app/Controller/UsersController.php
class UsersController extends AppController {

    public function beforeFilter() {
        parent::beforeFilter();
        $this->Auth->allow('add', 'logout', 'edit');
    }

    public function login() {

        if ($this->Auth->login()) {
            $this->redirect($this->Auth->redirect());
        } else {
            if (!empty($this->data))
                $this->Session->setFlash('Nomde de usuário ou senha inválidos, tente de novo','default',array('class' => 'errorMsg'));
        }
    }

    public function logout() {
        $this->redirect($this->Auth->logout());
    }

    public function index() {
        if (strcasecmp($this->Auth->user('role'), "Admin") == 0 ? false : true)
            $this->redirect(array('controller' => 'homes', 'action' => 'index'));
        $this->User->recursive = 0;
        $this->set('users', $this->paginate());
    }

    public function view($id = null) {
        $this->User->id = $id;
        if (!$this->User->exists()) {
            throw new NotFoundException(__('Invalid user'));
        }
        $this->set('user', $this->User->read(null, $id));
    }

    public function add() {
        $this->set('isAdmin', strcasecmp($this->Auth->user('role'), "Admin") == 0 ? true : false);
        if ($this->request->is('post')) {
            $this->User->create();
            if ($this->User->save($this->request->data)) {
                $this->Session->setFlash('Usuário cadastrado com sucesso','default',array('class' => 'sucessMsg'));
                $this->redirect(array('controller' => 'posts', 'action' => 'index'));
            } else {
                $this->Session->setFlash('Por favor, preencha corretamente os campos de cadastro e tente novamente.', 'default', array('class' => 'errorMsg'));

            }
        }
    }

    public function edit($id = null) {
        $this->set('nickname', $this->request->data['User']['nickname']);
        $this->set('email', $this->request->data['User']['email']);
        if ($this->Auth->user('id') != $id && $this->Auth->user('username') != 'admin')
            $this->redirect(array('controller' => 'homes', 'action' => 'index'));
        $this->User->id = $id;
        if (!$this->User->exists()) {
            throw new NotFoundException(__('Invalid user'));
        }
        if ($this->request->is('post') || $this->request->is('put')) {
            if (empty($this->request->data['User']['password']))
                unset($this->request->data['User']['password']);
            if ($this->User->save($this->request->data)) {
                $this->Session->setFlash('Edição realizada com sucesso','default',array('class' => 'sucessMsg'));
                $this->redirect(array('controller' => 'homes', 'action' => 'index'));
            } else {
                $this->Session->setFlash('Por favor, preencha corretamente os campos de cadastro e tente novamente.','default',array('class' => 'errorMsg'));
            }
        } else {
            $this->request->data = $this->User->read();
            unset($this->request->data['User']['password']);
        }
    }

    public function delete($id = null) {
        if (!$this->request->is('post')) {
            throw new MethodNotAllowedException();
        }
        $this->User->id = $id;
        if (!$this->User->exists()) {
            throw new NotFoundException(__('Invalid user'));
        }
        if ($this->User->delete()) {
            $this->Session->setFlash('Usuário excluído com sucesso','default',array('class' => 'sucessMsg'));
            $this->redirect(array('action' => 'index'));
        }
        $this->Session->setFlash('Erro na exclusão do usuário','default',array('class' => 'errorMsg'));
        $this->redirect(array('action' => 'index'));
    }

}